This invention relates generally to image processing and, more particularly, relates to processing image data using a negotiation structure within a push architecture.
Image processing is critical to many computer-related endeavors, such as the display of graphics received over a network, or rendering of an image from a file of image data. Quite often image data is stored or received in a form that requires transformation prior to rendering. For example, image data may have to be scaled, decompressed and so on before it is in the format appropriate for the rendering entity. The process by which image data is received, transformed, and rendered is referred to as the xe2x80x9cimage pipelinexe2x80x9d or xe2x80x9cimage rendering pipeline.xe2x80x9d
In an object-oriented environment, the pipeline is made up of a series of source and sink objects that accomplish the desired transformations. For example, compressed image data may be received from a network connection by a decoder object, which acts as an image data source for the subsequent object in the image-rendering pipeline. The subsequent object, or xe2x80x9csinkxe2x80x9d, could perform for example an encoding or scale transformation function, and might in turn act as an image data source for another object further along in the pipeline.
Traditionally, the image rendering pipeline components have been constructed to utilize a xe2x80x9cpullxe2x80x9d architecture. In general pull technologies essentially entail a data consumer specifically requesting information from a particular data provider. Downloading a Web page with a Web browser is a high level example of the use of pull technology. In the context of the image rendering pipeline, the use of pull technology generally means that a transaction between a data source and a data sink is driven by the data sink rather than the data source. Thus in the pipeline example above, the sink would specifically request the image data from the source, which is a decoder in this example. If the source does not currently have the data being requested, due for example to a delay on the network connection, then a potentially protracted waiting condition could occur. Another drawback to the use of pull technology is excess memory usage; at any given point in time, the sink is not necessarily aware of the image data currently possessed by the source, and consequently cannot know exactly when to ask for a particular item of data. Consequently, the source will generally store its received data at least until it receives a request for the data from the sink.
Pull technology may be contrasted with xe2x80x9cpushxe2x80x9d technology. The term xe2x80x9cpushxe2x80x9d technology refers to a data distribution technology in which selected data is delivered from a data source to a data sink at a time and in a manner determined by the source rather than the sink. Again using the Internet as a high level example, PointCast is a service which uses push technology. PointCast was an early provider of a service capable of delivering a selection of news and stock quotes to a user""s computer at certain intervals without a contemporaneous request for the data.
While there exist image rendering pipeline technologies that utilize push architecture, these technologies do not utilize the full potential of push technology because they lack a mechanism for optimizing the particular image data transfer parameters as a function of the needs and capabilities of both the source and sink.
In an embodiment of the invention, an image data source pushes image data to an image data sink. The bounds and details of the transfer are first decided via a negotiation which in general accommodates the preferences and limitations of both the source and the sink. The resultant data transfer is optimized, and avoids many drawbacks of both the pull architecture and the traditional, non-negotiated push architecture.
In a further embodiment of the invention, the image data is selected via a protocol for discovering and specifying a particular item of data from a multidimensional image data set. The protocol allows for the efficient querying of the data source to find the number of dimensions and the number of frames along any given dimension.